!==================Programa que calcula números primos=================

PROGRAM exec06

!======================================================================

IMPLICIT NONE

!=======================Declaração de variáveis========================

      INTEGER :: I, J, flag, lim, num

!========================Inicializa as variáveis=======================

      lim = 0
      I = 0
      J = 0
      flag = 0

!=========================Leitura da precisão==========================
      
      !Loop checa se não é entrado um valor não natural
      DO WHILE (lim <= 0)
            WRITE(*,*) 'Entre com o valor até o qual você quer achar &
            &os primos(>0)'
            READ(*,*) lim
      END DO

!=============================Abre o arquivo===========================

      OPEN(UNIT=10, FILE='primos_out.dat', STATUS='old')

!===========================Cálculo dos números========================

      !Loop do I é o que me diz o número
      DO I=1,lim
            FLAG = 0
            !Loop do J me diz os divisores
            DO J=1,I
                  IF (MOD(I,J) == 0) THEN
                  !Soma o número de vezes que o resto foi zero
                  FLAG = FLAG + 1
                  END IF
            END DO
      !Checa se o número de vezes que deu zero é igual a dois
      !(1 e ele mesmo) ou menor de que 2 (no caso do 1)
      IF (FLAG <= 2) THEN
            WRITE(10,*) I
      END IF
      END DO

!======================================================================

END PROGRAM exec06
